package com.chaos.order.api.dto.pay;

import com.chaos.framework.model.data.DATA;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;


/**
 * 支付基础信息
 */
@Data
public class BasePay extends DATA {

    public static Integer FAIL_PAY = 1;
    public static Integer SUCCESS_PAY = 2;

    @ApiModelProperty(value = "商户id")
    private String mchid;
    /**
     * 商品订单编号
     */
    @ApiModelProperty(value = "订单编号")
    private String orderNo;

    @ApiModelProperty(value = "订单类型")
    private Integer orderType;

    @ApiModelProperty(value = "微信openid")
    private String openId;

    @ApiModelProperty(value = "商户id")
    private Long merchantId;

    @ApiModelProperty(value = "用户id")
    private Long userId;

    @ApiModelProperty(value = "订单支付主主订单号,用于支付方接口交互使用", hidden = true)
    private String thirdOrderNo;

    @ApiModelProperty(value = "支付平台返回的支付交易流水号trade_no", hidden = true)
    private String thirdTradeNo;

    @ApiModelProperty(value = "渠道来源（ 1：微信小程序:2：支付宝小程序:3：高德小程序:4：快电:5：新电途）")
    private Integer channel;

    @ApiModelProperty(value = "支付方式（ 1:支付宝 2:微信 3:个人余额 4：企业余额）")
    private Integer payType;

    @ApiModelProperty(value = "支付场景（0:余额支付 1:扫码支付 2:app支付 3:H5支付 4:公众号支付 5:小程序支付 6:信用分）")
    private Integer payTradeType;

    @ApiModelProperty(value = " 1:失败支付 2:支付成功", hidden = true)
    private Integer payStatus;
    /**
     * 商品总额
     */
    @ApiModelProperty(value = " 订单金额", hidden = true)
    private BigDecimal totalAmount;
    /**
     * 优惠金额
     */
    @ApiModelProperty(value = " 优惠金额", hidden = true)
    private BigDecimal discountAmount;
    /**
     * 实付金额
     */
    @ApiModelProperty(value = " 支付金额", hidden = true)
    private BigDecimal payAmount;
    /**
     * 收银台URL
     */
    private String caskDeskUrl;
    /**
     * 返回地址
     */
    private String returnUrl;
    /**
     * 第三方生成支付单时间
     */
    private LocalDateTime createPayTime;
    /**
     * 订单支付超时时间
     */
    private LocalDateTime timeoutPayTime;
    /**
     * 支付成功/失败时间
     */
    private LocalDateTime paySuccessTime;

    /**
     * 第三方返回成功/失败信息描述
     */
    private String thirdRemark;

    /**
     * 交易信息，json字符串，便于灵活记录支付平台返回信息
     */
    private String tradeInfo;

    /**
     * 记录创建用户
     */
    private Long createUserId;

    /**
     * 我方生成支付单时间
     */
    private long createTime;

    /**
     * 最后修改时间
     */
    private long lastModifyTime;

    /**
     * 是否拆单 0不拆单1拆单
     */
    private Integer needSplitOrder;

    /**
     * 子支付订单集合List
     */
    /*  private List<CwPayChild> cwPayChildList;*/

    /**
     * 订单下定时间
     */
    private long orderCreateTime;
    /**
     * 订单下定人名称
     */
    private String orderReceiverName;
    /**
     * 商品信息描述
     */
    private String commodityName;

}
